package com.salim.leetcode.$48;

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class RotateImage {
    public void rotate(int[][] matrix) {
        for(int i = 0; i<matrix.length; i++){
            for(int j = i; j<matrix[0].length; j++){
                int temp = 0;
                temp = matrix[i][j];
                matrix[i][j] = matrix[j][i];
                matrix[j][i] = temp;
            }
        }
        for(int i =0 ; i<matrix.length; i++){
            for(int j = 0; j<matrix.length/2; j++){
                int temp = 0;
                temp = matrix[i][j];
                matrix[i][j] = matrix[i][matrix.length-1-j];
                matrix[i][matrix.length-1-j] = temp;
            }
        }
    }
    //太麻烦了不想写
//    public void rotate(int[][] matrix) {
//        int middle = matrix.length/2 -1;
//        for(int i=0;i<=middle;i++){
//            doRotate(matrix,i);
//        }
//    }
//
//    public void doRotate(int[][] matrix,int level) {
//        int step = matrix.length - level*2;
//        for(int j=0;j<step-1;j++){
//            int first = matrix[level][level+j];
//            int nextI = 0;
//            int nextJ = 0;
//            int prevI = level;
//            int prevJ = level+j;
//            for(int i=0;i<3;i++){
//                if(prevI == level){
//                    //上边
//                    nextI = step-1-prevJ;
//                    nextJ = 0;
//                }else if(prevI == step-1-level){
//                    //下边
//                    nextI = step-1-prevJ;
//                    nextJ = step-1;
//                }else if(prevJ == level){
//                    //左边
//                    nextI = step-1;
//                    nextJ = prevI;
//                }else if(prevJ == step-1-level){
//                    //右边
//                    nextI = 0;
//                    nextJ = prevI;
//                }
//                matrix[prevI][prevJ] = matrix[nextI][nextJ];
//                prevI = nextI;
//                prevJ = nextJ;
//            }
//            matrix[prevI][prevJ] = first;
//        }
//    }

    public static void main(String[] args) {
        RotateImage p = new RotateImage();
//        p.rotate(new int[][]{{1,2,3},{4,5,6},{7,8,9}});
        p.rotate(new int[][]{{5,1,9,11},{2,4,8,10},{13,3,6,7},{15,14,12,16}});
//        log.info("PermutationsII输出结果1：{}", ));
    }


}
